1. Field of the Invention
The present invention is in the field of computer systems, and more particularly the field of computer software, and particularly simulation modeling software.
2. Discussion of the State of the Art
Many types of complex processes are usefully studied using simulation, as is well-known in the art. For example, market participants often conduct simulations to estimate the likely outcome of particular investment strategies. In physical sciences, simulation is often used to study systems that are not readily susceptible to direct experiment, and it is also often used in the design of large-scale experiments to understand behaviors that are likely to be observed when the systems being designed are actually operated. In this vein, many large-scale simulations were conducted in advance of the initial startup of the Large Hadron Collider at CERN in Geneva. Another area where realistic and detailed simulations are of great value is the operations of large contact centers, or call centers, in which customer service agents take calls from consumers. The modern contact center typically handles many different types of calls, and uses sophisticated routing logic to optimally distribute calls among available agents, based at least in part on the skill sets of each of the agents.
In the art, contact center operations and specifically contact center routing were analyzed primarily using queuing theory, a mathematical body of knowledge developed over the course of the twentieth century. Unfortunately, modern contact centers have become too complex to be modeled accurately using queuing theory, and simulation has emerged as the only viable means of predicting the likely outcome of various call volume, agent availability, and routing scenarios. But study of contact center operations using simulation is made difficult by two key factors. The first is that it is crucially important to be able to run a simulation model (that is, to simulate a contact center's operations), at a speed much faster than real time. That is, it is desirable to simulate a day of operations of a large contact center in well under one hour, so that multiple runs may be conducted and understanding obtained in a reasonable time frame. If it took one day to simulate one day, it would not be feasible to conduct complex “what if” scenarios using simulation. The second problem is that simulation is a specialized applied mathematical technique, and requires skills that are not generally present in modern contact centers staffs. Because of this, what often happens is that external simulation experts are contracted to develop a custom simulation model for a given contact center, often with those same experts conducting the simulations themselves, interpreting the results, and reporting those results back to the contact center's staff. The problem with this approach is that simulation experts are expensive and do not typically have deep contact center domain knowledge, while the staff of the contact center has the requisite knowledge of contact centers but is unfamiliar with simulation techniques and tools.
The first problem is often solved using a technique referred to as discrete event simulation. In this technique, a simulation engine maintains a list, or queue, of upcoming expected events (events including such things as new call arrivals, terminations of existing calls, arrival or departure of agents, and so forth). Each time an event occurs, it is processed and any resulting events are allocated to a time in the future, and then the next event in the queue is executed, “jumping” the model time from the time of the first event to the time of the next event without waiting for actual clock time to get to the time of the next event. In this way, model time is discretized (hence “discrete event simulation”), and the rate of model execution is typically many times faster than clock time or real time. Unfortunately, though, use of discrete event simulation exacerbates the second problem, as discrete event simulation generally requires advanced simulation knowledge and specialized simulation tools.
What would generally be desirable, in order for simulation to become an everyday tool in contact center operations and planning, is a simulation approach that did not require specialized knowledge to run, and that utilizes standard contact center software products in a way that enables contact center staff to run simulations themselves, and to interpret simulation results using familiar tools. For example, a contact center professional might desire to run a “what if” scenario to see what would occur is a certain routing strategy was modified slightly, and particularly it might be desirable to run the model against a previous day's traffic patterns to see what impact (positive or negative) the proposed routing change would have had compared to the actual results. Unfortunately, in the current art this is not possible, because the key applications used in contact centers are time-dependent and make frequent use of the host computer system's internal clock. For example, a routing strategy might take into account an average time to answer for a certain class of calls in making routing decisions; in order to calculate this average time to answer, it must know the actual clock time of each calls' arrival and of the answering of each call (subtracting the second from the first gives one an “answer time”, and these can then be averaged over all calls of a certain type to get the desired result). Currently, simulation tools that are designed to use discrete event simulation cannot be used together with off the shelf contact center software such as routing engines, statistics servers, scheduling software, and the like, precisely because these contact center applications are fundamentally dependent on time for their operation, and they would operate incorrectly if run using a discrete event simulation model's model time.
Because of these interlocking problems, simulation is rarely used in contact centers and, when it is used, it is generally used for a short time for a specific problem, because the cost of keeping a custom simulation model up to date as contact center configuration changes (that is, as agents leave and are hired, and as call volume patterns and call routing strategies change, all of which happens on a continuous basis) is simply too exorbitant. Because of this, the most promising approach to understanding the complex dynamics of modern contact centers is effectively precluded from use, with severe economic impact on large contact centers (unfortunately, most large contact centers today are “flying blind”, forced to make operational decisions without a firm understanding of their implications.
What is needed is a way to virtualize time, which is to say a way to allow software products that use time in an integral way to run much faster than real time. If time virtualization were accomplished, then for example contact center professionals would be able to run simulation models using commercially available contact center software products running in conjunction with a user-friendly simulation tool, at speeds many times faster than normal clock speed. For example, in one example the inventor has demonstrated running a simulated contact center of 200 agents, using standard routing and statistics software, at more than 200 times real time (that is, an hour is simulated in about 15 seconds). While the example described here pertains to simulation, time virtualization will be beneficial in any situation where it is desirable to run software or hardware that uses time-based functions dependent on a system clock at a speed many times that of the system clock, without the software or hardware application “knowing” it is not talking to a real clock.